package com.stlm2.core.base;

import com.stlm2.core.common.page.PageView;

import java.util.List;
import java.util.Map;

/**
 * dao基本接口

 *
 */
public interface BaseDao<T> {


	<E> E getMapper(Class<E> clazz);

	/**
	 * 查询集合
	 * 
	 * @param first
	 * @param max
	 * @param params
	 * @return
	 */
	List<T> queryList(int first, int max, T t);
	List<Map<String,Object>> queryList2(int first, int max, T t);
	List<T> queryList3(int first, int max, Map<String, Object> map);
	/**
	 * 分页查询
	 * 
	 * @param pageSize
	 * @param pageNo
	 * @param params
	 * @return
	 */
	PageView queryPageView(int pageNo, int pageSize, T t);

	PageView queryPageView2(int pageNo, int pageSize, T t);

	PageView queryPageView4(int pageNo, int pageSize, T t);
	//========
	PageView queryPageView(int pageNo, int pageSize, String selectId, Object t);


	/**
	 * 返回所有数据
	 * 
	 * @param
	 * @return
	 */
	List<T> queryAll();

	void delete(Integer id);

	void modify(T t);

	T getById(Integer id);



	void add(T t);
    /*
    * sfy
    * 2017年5月26日21:46:52
    *向reids中插入一个对象
    * param T(对象)，keyList(以哪个字段去搜索对象)
    * */
	void addIntoRedis(T t,List<String> keyList);
	/*
	  *通过指定key键，在Redis存入对象
	  * zlq
	   */
	void addIntoRedis(T t,String key);
    /*
    *
    * */
      T selectOneFromRedis(T t);
	  /*
	  zlq
	  *通过指定key键，从Redis获取对象
	   */
	  T selectOneFromRedis(T t,String key);

	/*
	* sfy
	* 2017年6月23日14:45:39
	* 从reids中获取某个表中的所有数据
	* */

	List<T> listFromRedis(T t);

	/*
	* sfy
	* 2017年6月24日11:32:15
	* 从redis中将某个表的数据都删除
	* */
     void deleteFromRedis(T t);


	List<T> queryList1(int first, int max, String selectId, T t);
}
